﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using ENT.PM.Core.Estadisticas;
using ENT.PM.Core.Core;
using Coolite.Ext.Web;
using ENT.PM.Core;
using System.Xml;
using System.Xml.Xsl;
using System.Web.UI.DataVisualization.Charting;
using ENT.PM.Core.Lookup;

namespace ent_pm.Estadisticas.Binacional
{
    public partial class Estadistica : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //if (!IsPostBack)
            //{
                storeOpcionDatos.DataSource = OpcionVariables.GetOpcionVariables();
                storeOpcionDatos.DataBind();
                StoreEntidades.DataSource = EntidadLookup.GetNameValueList();
                StoreEntidades.DataBind();

            //}
        }
        //protected void cbxOpcionDatos_Change(object sender, EventArgs e)
        protected void VerGrafica_Click(object sender, EventArgs e)
        {
            try
            {
                List<DatosEstadistica> listaDatos = new List<DatosEstadistica>();
                string[] idEntidades;
                var ids = hidIdsEntidad.Text.Remove(hidIdsEntidad.Text.Length-1);
                idEntidades = ids.Split(';');
                string Campo = cbxOpcionDatos.SelectedItem.Value;
                int numEntidades;
                
                var entidades=EntidadLookup.GetNameValueList();
                numEntidades = entidades.Count;
                var datosCompletos = DatosEstadisticaDosVariables.GetDatosEstadisticaDosVariablesBinacional(Campo);

                //var datos = DatosEstadisticaDosVariables.GetDatosEstadisticaDosVariables(Campo,271,entidadId);
                var datosEstadistica = DatosEstadisticaDosVariables.GetDatosDeEstadisticaDosVariablesBinacional(Campo);
                foreach (var item in datosEstadistica)
                {
                    listaDatos.Add(new DatosEstadistica() { 
  Canton=item.Canton, InversionTotal=item.InversionTotal, NumeroProyectos=item.NumeroProyectos, 
  Nombre=item.Nombre, Pais=item.Pais, Parroquia=item.Parroquia, Valor=item.Valor, ValorId=item.ValorId,
  Entidad1 = item.ListaEntidades[0].ValorAporte,  Entidad2 = item.ListaEntidades[1].ValorAporte,
  Entidad3 = item.ListaEntidades[2].ValorAporte,  Entidad4 = item.ListaEntidades[3].ValorAporte
                    });

                }
                storeDatos.DataSource = listaDatos;
                storeDatos.DataBind();
                Chart1.Titles[0].Text = string.Format("Proyectos - {0}",cbxOpcionDatos.SelectedItem.Text);
                

                this.Chart1.Series[1].ToolTip = "#AXISLABEL - Número Proyectos: #VAL{0}";
                this.Chart1.Series[0].ToolTip = "#AXISLABEL - Inversión Total: #VALY{C}";
                

                foreach (var entidad in entidades)
                {
                    foreach (var item in idEntidades)
                    {
                        if (entidad.Key.ToString()==item)
                        {
                            var serie = new Series(entidad.Key.ToString());
                            serie.ToolTip = "#AXISLABEL - " + entidad.Value + ": #VALY{C}";
                            Chart1.Series.Add(serie);
                            break;
                        }
                    }                    
                }

                foreach (var datoCompleto in datosCompletos)
                {
                    Chart1.Series[0].Points.AddXY(datoCompleto.Valor, datoCompleto.InversionTotal);
                    // Chart1.Series[0].IsValueShownAsLabel = true;
                    Chart1.Series[0].LabelFormat = "C";
                    Chart1.Series[0].LegendText = "Inversión Total";
                    Chart1.Series[1].Points.AddXY(datoCompleto.Valor, datoCompleto.NumeroProyectos);
                    Chart1.Series[1].LegendText = "Número Proyectos";

                    
                    foreach (var entidad in datoCompleto.ListaEntidades)
                    {
                        foreach (var item in idEntidades)
                        {
                            if (entidad.EntidadId.ToString() == item)
                            {
                                Chart1.Series[entidad.EntidadId.ToString()].Enabled = true;
                                Chart1.Series[entidad.EntidadId.ToString()].LabelFormat = "C";
                                Chart1.Series[entidad.EntidadId.ToString()].LegendText = entidad.Nombre;
                                Chart1.Series[entidad.EntidadId.ToString()].Points.AddXY(datoCompleto.Valor, entidad.ValorAporte);
                            }
                        }
                        
                    }

                }

                
                Chart1.Series[0].IsVisibleInLegend = true;
                Chart1.Series[1].IsVisibleInLegend = true;
                
                //dato.Valor,dato.InversionTotalChart1.ChartAreas[0].AxisY.LabelStyle.Format = "C";
                Chart1.Series[0].LabelAngle = 30;
                Chart1.Series[0].Enabled = chkOpc1.Checked;
                Chart1.Series[1].Enabled = chkOpc2.Checked;
                
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.ToString());
            }
        }

        protected void ToExcel(object sender, EventArgs e)
        {
            string json = GridData.Value.ToString();
            StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(json, null);
            XmlNode xml = eSubmit.Xml;

            this.Response.Clear();
            this.Response.ContentType = "application/vnd.ms-excel";
            this.Response.AddHeader("Content-Disposition", "attachment; filename=reporteDatosEstadistica.xls");
            XslCompiledTransform xtExcel = new XslCompiledTransform();
            xtExcel.Load(Server.MapPath("Excel.xsl"));
            xtExcel.Transform(xml, null, this.Response.OutputStream);
            this.Response.End();
        }
    }
    public class DatosEstadistica
    {
        public int NumeroProyectos { get; set; }
        public string Nombre { get; set; }
        public string Canton { get; set; }
        public string Parroquia { get; set; }
        public double InversionTotal { get; set; }
        public double Entidad1 { get; set; }
        public double Entidad2 { get; set; }
        public double Entidad3 { get; set; }
        public double Entidad4 { get; set; }
        public string Valor { get; set; }
        public int ValorId { get; set; }        
        public string Pais { get; set; }       

    }
}
